﻿using System;
namespace OR.Lazarus.Business
{
	public interface ICompilerEngine
	{
		event EventHandler AfterGenerateCompiled;
		event EventHandler AfterGenerateManifest;
		event TierGenerateEventHandler AfterGenerateTier;
		event EventHandler BeforeGenerateCompiled;
		event EventHandler BeforeGenerateManifest;
		event TierGenerateEventHandler BeforeGenerateTier;
		void Compile();
		event CompileEventHandler CompiledModelGenerated;
		event GenerateEventHandler FileGenerated;
		event FileLoadEventHandler FileLoaded;
		int FilesGenerated { get; }
		int FilesToGenerate { get; }
		event GenerateCompleteEventHandler GenerationCompleted;
		void Initialize( string pConfigPath, string pSourcePath );
		void Initialize();
		void LoadConfig( string pFullPath );
		void LoadSource( string pFullPath );
		event SourceCompileCompleteEventHandler SourceCompileCompleted;
		event SourceCompileStartEventHandler SourceCompileStarted;
	}
}
